/** 
 * https://leetcode.cn/problems/maximum-erasure-value/
 * 1695. 删除子数组的最大得分
 * medium, 王顶成 2024.9.5
 * c++  哈希表+滑动窗口
 */

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    int maximumUniqueSubarray(vector<int>& nums) {
        int sum=0;
        int n=nums.size();
        unordered_map<int,int> a;
        int l=0,ans=0;
        for(int i=0;i<n;i++){
            int x=nums[i];
            a[x]++;
            sum+=nums[i];
            while(a[x]>1){
                a[nums[l]]--;
                sum-=nums[l++];
            }
            ans=max(ans,sum);
        }
        return ans;
    }
};